멤버 변수는 클래스 내부에 정의된 변수를 통칭하는 용어이며, 일반적으로 클래스 변수와 인스턴스(객체) 변수를 모두 포함하는 상위 개념이다. 클래스 정의의 일부분으로, 클래스가 생성하는 모든 객체에 영향을 주거나, 각 객체가 개별적으로 소유할 수 있는 속성이다.
클래스 변수는 클래스 자체에 속하며, 해당 클래스로부터 생성된 모든 인스턴스가 공유하는 변수이다. 클래스 정의 내부에서 메서드 바깥에 선언되며, 일반적으로 클래스 전체에서 공통된 데이터를 저장하는 데 사용된다.
class Car:
wheels = 4 # 클래스 변수
def __init__(self, color):
self.color = color # 객체 변수
객체 변수(또는 인스턴스 변수)는 클래스의 각 인스턴스가 개별적으로 소유하는 변수이다. 생성자 메서드 `__init__` 내부 등에서 `self` 키워드를 통해 정의되며, 객체마다 서로 다른 값을 가질 수 있다.
car1 = Car("red")
car2 = Car("blue")
print(car1.color) # red
print(car2.color) # blue
구분 | 클래스 변수 | 객체 변수 (인스턴스 변수) |
---|---|---|
정의 위치 | 클래스 정의 내부, 메서드 외부 | 클래스 내부 메서드 안, self를 통해 정의 |
소속 | 클래스 | 각 인스턴스 |
공유 여부 | 모든 인스턴스가 공유 | 인스턴스마다 별도로 존재 |
접근 방법 | 클래스명.변수 또는 self.변수 | self.변수 |
예시 | wheels = 4 | self.color = "red" |
class Dog:
species = "Canine" # 클래스 변수
def __init__(self, name):
self.name = name # 객체 변수
dog1 = Dog("Buddy")
dog2 = Dog("Charlie")
print(dog1.species) # Canine
print(dog2.species) # Canine
Dog.species = "Wolf" # 클래스 변수 변경
print(dog1.species) # Wolf
print(dog2.species) # Wolf
print(dog1.name) # Buddy
print(dog2.name) # Charlie